<?php
/* *
 * 功能：支付宝服务器异步通知页面
 * 版本：3.3
 * 日期：2012-07-23
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。


 *************************页面功能说明*************************
 * 创建该页面文件时，请留心该页面文件中无任何HTML代码及空格。
 * 该页面不能在本机电脑测试，请到服务器上做测试。请确保外部可以访问该页面。
 * 该页面调试工具请使用写文本函数logResult，该函数已被默认关闭，见alipay_notify_class.php中的函数verifyNotify
 * 如果没有收到该页面返回的 success 信息，支付宝会在24小时内按一定的时间策略重发通知
 */

require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");

if(!defined('API_IP')){
    define('API_IP', 'http://webapi.jxzhjy.com/');
//    define('API_IP', 'http://118.178.143.61:8080/');
}

//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();

if($verify_result) {//验证成功
    //获取支付宝的通知返回参数，可参考技术文档中服务器异步通知参数列表
    $out_trade_no = $_POST['out_trade_no'];//商户订单号
    $trade_no = $_POST['trade_no'];//支付宝交易号
//    $trade_status = $_POST['trade_status'];//交易状态

    //首先先判断该商户订单号是否已经被处理过，如果已经被处理过则无需再次处理
    $orderInfo = json_decode(file_get_contents(API_IP.'index.php?mod=trade&action=main&do=getinfo&fm_sort=dz&tm_out_trade_no='.$out_trade_no), true);
    @file_put_contents(NOW_ROOT.'../../../data/debug/input_log.txt','RECEIVE: '.date('Y-m-d H:i:s').' '.serialize($orderInfo).PHP_EOL,FILE_APPEND);
    if($orderInfo['success'] && ($orderInfo['data']['tm_status'] == 'WAIT_BUYER_PAY')){//如果获取成功，开始处理，失败的话不作处理
        @file_put_contents(NOW_ROOT.'../../../data/debug/input_log.txt','RECEIVE: '.date('Y-m-d H:i:s').' 这里是支付宝异步处理程序反向更新订单操作'.PHP_EOL,FILE_APPEND);
        //提交接口将主订单置为支付成功，将对应的订单商品置为已支付
        $tmpInfo = json_decode(file_get_contents(API_IP.'index.php?mod=trade&action=main&do=notify&fm_sort=dz&tm_out_trade_no='.$out_trade_no.'&trade_no='.$trade_no), true);
    }

//    if($trade_status == 'TRADE_FINISHED'){
//        //判断该笔订单是否在商户网站中已经做过处理
//    }
//    elseif($trade_status == 'TRADE_SUCCESS'){
//        //判断该笔订单是否在商户网站中已经做过处理
//    }

    echo "success";//请不要修改或删除
}
else {
    //验证失败
    echo "fail";
}
?>